package com.estate.system.domain;

// Agent数据模型

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.estate.common.config.JsonbStringTypeHandler;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.ibatis.type.Alias;

import java.util.Date;

@Data
@Alias("agents")
@TableName("agents")
@EqualsAndHashCode(callSuper = false)
@JsonIgnoreProperties(ignoreUnknown = true)
public class Agent {
    // 基础信息字段
    private Long id;                      // 员工ID，主键
    private Integer agentId;                      // AgentID，主键
    private String firstname;                // 名字
    private String lastname;                 // 姓氏
    private String name;                     // 全名
    private String email;                    // 邮箱地址
    private String mobile;                   // 手机号码
    private String phone;                    // 电话号码
    private String position;                 // 职位/头衔
    private String role;                     // 角色
    private String profile;                  // 个人简介/描述
    private String achievements;             // 成就描述

    // 状态和显示相关字段
    private String status = "current";       // 状态：current/其他
    private Boolean isHidden = false;        // 是否隐藏
    private Integer sequence = 0;            // 排序序列号

    // 图片和媒体相关字段
    private String imageUrl;                 // 图片URL
    private String imageUrlOriginal;         // 原始图片URL
    private String imageLargeUrl;            // 大图URL
    private String imageLargeUrlOriginal;    // 原始大图URL
    private String video;                    // 视频链接

    // JSONB类型字段用于存储复杂结构数据
    @TableField(typeHandler = JsonbStringTypeHandler.class)
    private String offices;                // 办公室信息数组，存储 [{"id": 358}] 格式数据
    @TableField(typeHandler = JsonbStringTypeHandler.class)
    private String socialLinks;            // 社交链接对象，存储 {"facebook": "", "twitter": ""} 格式数据
    @TableField(typeHandler = JsonbStringTypeHandler.class)
    private String specialtySuburbs;       // 专长郊区数组，存储 [] 或 [suburb1, suburb2] 格式数据

    // 时间戳字段
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createdAt;         // 创建时间

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updatedAt;         // 更新时间
}
